package demo03;

/*
 * 内部类：一个类内部包含的另一个类。
 * 例如生活中的一些关系：身体和心脏的关系、汽车和发动机的关系。
 * 
 * 内部类分类：
 * 1. 成员内部类
 * 2. 局部内部类(包含匿名内部类)
 * 
 * 成员内部类的定义格式：
 *  修饰符 class 外部类名称 {
 *      修饰符 class 内部类名称 {
 *          // ...
 *      }
 *      // ...
 *  }
 * 
 * 注意：
 * 1. 内部类使用外部类可以随意访问
 * 2. 外部类使用内部类，一定需要借助内部类对象
 * 
 * 使用成员内部类有两种方式：
 * 1. 间接方式：在外部类的方法中使用内部类，在main方法中调用该外部类方法
 * 2. 直接方式：格式：
 *  外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();
 */
public class Demo01InnerClass {
    public static void main(String[] args) {
        Body body = new Body();
        body.methodBody(); // 间接使用成员内部类
        System.out.println("==================================");

        body.new Heart().methodHeart(); // 直接创建成员内部类对象并使用成员内部类
        System.out.println("==================================");
        
        // 直接创建内部类对象的标准格式
        Body.Heart heart = new Body().new Heart();
        heart.methodHeart(); // 使用方法
    }
}
